A software module instance executing on a computer may occasionally become unstable. Generally a software module instance refers to a specific set of state structures, queues, control memory, etc. Such instability, commonly referred to as a “software fault,” may be caused by any variety of factors including, for example, incorrect logic, divide-by-zero and other software coding errors or “bugs.”
FIG. 1 illustrates a block diagram of a typical prior memory configuration in which software module instances A 110 and software module instance B 115 store, access, and update object A 125, object B 130 and object C 135 in an area of shared memory 120. In some systems, access to the contents of a shared memory may be controlled using one or more locking mechanisms in order to coordinate non-overlapping access between multiple software module instances. For example, software module instance A 110 could use the POSIX pthread_mutex_lock( ) to acquire a mutex lock protecting object A 125. If software module instance B 115 were to also use pthread_mutex_lock( ) to subsequently acquire the same mutex, software module instance B 115 would be held back until software module instance A 110 called pthread_mutex_unlock( ) to release control of the mutex.
In systems employing shared memory among software module instances, software faults may not be contained. Once a software module instance becomes unstable, it may corrupt data stored in the shared memory. Corruption of data is not limited to data typically stored, accessed or changed by the unstable software module instance. All data stored in the shared memory is at risk due to the unpredictable execution of the unstable software module instance.
Further, once an unstable software module instance corrupts data used by other software module instances, the corruption may spread and cause the other software module instances to become unstable. This cascading of software faults can lead to a complete system failure or crash. Even if other software module instances do not become unstable, user data can be corrupted by any failing instances in ways that are very difficult to detect.